/**
  ES5给Object扩展了好一些静态方法, 常用的2个:
  1. Object.create(prototype, [descriptors])
    * 作用: 以指定对象为原型创建新的对象
    * 为新的对象指定新的属性, 并对属性进行描述
      value : 指定值
      writable : 标识当前属性值是否是可修改的, 默认为false
      configurable: 标识当前属性是否可以被删除 默认为false
      enumerable： 标识当前属性是否能用for in 枚举 默认为false

  2. Object.defineProperties(object, descriptors)
    * 作用: 为指定对象定义扩展多个属性
    * get ：用来获取当前属性值的回调函数
    * set ：修改当前属性值触发的回调函数，并且实参即为修改后的值
    * 存取器属性：setter,getter一个用来存值，一个用来取值
 */

 //Object.create(prototype, [descriptors])
const obj = {name: 'limi', age: 30}
let obj1 = {}
// obj1以obj为原型创建新的对象
obj1 = Object.create(obj, {
  sex: {
    value: '男',
    writable: true,
    configurable: true,
    enumerable: true
  },
  city: {
    value: '桂林',
    enumerable: true
  },
  hobby: {
    value: '篮球、跑步、写代码',
    enumerable: true
  }
})
console.log(obj)
console.log(obj1.name + ' ' + obj1.age + ' ' + obj1.sex)

obj1.sex = '女'
console.log(obj1.name + ' ' + obj1.age + ' ' + obj1.sex)

delete obj1.sex // 删除sex属性
console.log(obj1.sex)

const obj1Keys = Object.keys(obj1)
console.log(obj1Keys)